package com.ecnu.system.service;

import com.ecnu.common.core.domain.AjaxResult;
import com.ecnu.common.core.domain.model.LoginUser;
import com.ecnu.common.core.page.TableDataInfo;
import com.ecnu.system.domain.IncubationFactory;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ecnu.system.domain.dto.incubation.FactoryPageDTO;
import com.ecnu.system.domain.dto.incubation.IncubationFactoryDTO;
import com.ecnu.system.domain.dto.incubation.IncubationFileDTO;
import com.ecnu.system.domain.dto.incubation.TransferDTO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * ecnu_二期_成果车间 服务类
 * </p>
 *
 * @author zdn
 * @since 2025-10-16
 */
public interface IIncubationFactoryService extends IService<IncubationFactory> {

    AjaxResult edit(IncubationFactoryDTO dto, LoginUser loginUser);

    AjaxResult infoById(String id);

    Boolean fileToSave(IncubationFileDTO dto, LoginUser loginUser);

    TableDataInfo listForIncubation(FactoryPageDTO dto, LoginUser proUser);

    TableDataInfo listForAnalysis(FactoryPageDTO dto, LoginUser proUser);

    TableDataInfo listByClaim(FactoryPageDTO dto, LoginUser proUser);

    TableDataInfo claimList(FactoryPageDTO dto, LoginUser proUser);

    AjaxResult claimEdit(IncubationFactoryDTO dto, LoginUser loginUser);

    AjaxResult claimDel(String dto, LoginUser loginUser);

    AjaxResult transform(String[] id, LoginUser loginUser);

    TableDataInfo listForPageIncubation(FactoryPageDTO dto, LoginUser proUser);

    Map<String, Object> getAllIncubationFactoriesStatistics(LoginUser loginUser);
    AjaxResult dictionary();

    /**
     * 获取字典键值对
     * @param name
     * @return
     */
    List<Map<String, String>> getDict(String name);

    AjaxResult getAllFactoryStatistics(TransferDTO dto);

    AjaxResult listForConditions();

    TableDataInfo listForTransfer(TransferDTO dto, LoginUser proUser);

    AjaxResult claimDelList(String[] ids, LoginUser loginUser);

    List<String> selectAssess(List<String> incubationList);

    void editList(List<String> incubationFactories);

    List<String> selectExtract(List<String> incubationList);

    AjaxResult editIncuPro(String incubationId);
}
